<?php

class SitemapController extends Controller
{
	
	
	public function actionIndex()                             //Метод выводит на сайт карту сайта в виде списка            
	{
	   $this->Defaultmetatag;
	   $links = $this->Linkarray();
     
            $this->render('index', array('links'=>$links));
	}
	
    
    public function actionGenerate()                         //Метод, для создания карты сайта на диске в файле     
    {
        
        $links = $this->Linkarray();                         //Получаем массив со всеми ссылками
	
		$sitemap = new Sitemap();

		// Добавим страничку
		$sitemap->addItem(new SitemapItem(
		  Yii::app()->homeUrl, 							    // Домашний URL
		  time(), 										    // Время в формате timestamp.
		  SitemapItem::monthly, 							//Частота обновления (константы класса SitemapItem).
		  0.7 										      	// Приоритет страницы.
		));
		 
         
		// Добавим все остальные страницы сайта.
		foreach($links as $label=>$link)
        {
		  $sitemap->addItem(new SitemapItem(
					$link['url'],                                               //ссылка URL
					strval($link['time']),                                     //updated_on,   string((int)unix time)   "$page->created", 
					SitemapItem::monthly                                       //Частота обновления страницы
										));
		}
		 
		// Сгенерим sitemap в файл sitemap.xml.
		// Если файл не указать - generate вернёт строку.
		$generate = $sitemap->generate('sitemap.xml');
        if($generate)
            $this->redirect(Yii::app()->homeUrl); 
                else
                    throw new CHttpException(400, 'Bad request');
            
    }
    
    
    
     private function Linkarray()
    {
       $arrlinks = array(); 
       $homeurl = Yii::app()->homeUrl;
        
        $criteria = new CDbCriteria;
        $criteria->order = 'menu_id, position ASC';
        
        $links = Linkmenu::model()->findAll($criteria);
        
        foreach($links as $link)
        {
            switch($link->type)
            {
                 
               case "category" : $arrlinks[$link->label] = array('url'=>$homeurl.'/site/index?cat='.$link->url, 
                                                                        'time'=>$link->create_time);                 break;
                 
               case "uri"         :  $arrlinks[$link->label] = array('url'=>'http://test1.ru/'.$link->url,
                                                                        'time'=>$link->create_time);                 break;                    
                                                                         
               case "url"         :  $arrlinks[$link->label] = array('url'=>$link->url,
                                                                        'time'=>$link->create_time);                 break;                       
                                                                         
               case "module"      :  $arrlinks[$link->label] = array('url'=>'http://test1.ru/'.$link->url,
                                                                        'time'=>$link->create_time);                 break;                      
                                                                         
               case "staticpage"  :  $arrlinks[$link->label] = array('url'=>'http://test1.ru/'.$link->url,
                                                                        'time'=>$link->create_time);                 break;                    
                                                                           
            }
        }
        return $arrlinks;  
    }
    
	
}
